﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace OrderManager
{
    public partial class AddNewFood : Form
    {
        public AddNewFood()
        {
            InitializeComponent();
        }

        private void CancelChanges(object sender, EventArgs e)
        {
            MenuUpdater.update(Program.foodList);
            this.Close();
            return;
        }

        private void AcceptChanges(object sender, EventArgs e)
        {
            int priceVal;
            this.nameBox.Text = this.nameBox.Text.Trim();


            // A név ellenőrzése
            if (this.nameBox.Text.Length < 5)
            {
                MessageBox.Show("A névnek legalább 5 karakter hosszúnak kell lennie!");
                this.nameBox.SelectAll();
                this.nameBox.Focus();
                return;
            }
            // Nem lehet % karakter a névben mert az elválasztóként használt a menüt tartalmazó fájlban
            if (nameBox.Text.Contains('%'))
            {
                MessageBox.Show("A név nem tartalmazhatja a % karaktert.");
                this.nameBox.SelectAll();
                this.nameBox.Focus();
                return;
            }
            // Létezik-e már étel a megadott névvel - ha nem, akkor a feltételben lévő fv. -1-et ad vissza
            if (CommonFunctions.FindItemByName(Program.foodList, nameBox.Text) != -1)
            {
                MessageBox.Show("Érvénytelen név, már létezik ilyen!");
                this.nameBox.SelectAll();
                this.nameBox.Focus();
                return;
            }


            // Az ár ellenőrzése
            // Annak ellenőrzése, hogy a megadott ár szám-e, és ha igen, akkor pozitív-e
            if (!int.TryParse(this.priceBox.Text, out priceVal) || priceVal <= 0)
            {
                MessageBox.Show("Pozitív egész szám kell árnak!");
                this.priceBox.SelectAll();
                this.priceBox.Focus();
                return;
            }



            // Ha minden ellenőrzésen átmentek  amegadott adatok, felvehetjük őket a menübe.
            // TODO: az updater által dobott kivételek kezelése (használatban lévő fájl. stb.)
            Food food = new Food(nameBox.Text, priceVal);

            Program.foodList.Add(food);

            MessageBox.Show("A változások elmentve.");
            this.priceBox.Text = this.nameBox.Text = "";

            this.nameBox.Focus();

            return;
        }
    }
}
